In a large-scale MIMO or massive MIMO system, the BS is equipped with dozens of or even hundreds of transmitting antennas. It has received enormous attention due to its ability for providing linear capacity growth without the need of increased power or bandwidth and is a key technique for the next generation wireless communication systems (e.g., beyond 4G, 5G). This advantage is realized by employing Multi-User MIMO (MU-MIMO) where the number of paired users is more than that of traditional systems. In this system, the BS selects users at each scheduling slot and transmits data to these users on the same time and frequency resource block. Precoding vectors are used to map the transmitting signals to the hundreds of transmitting antennas. In practical systems, when the channel quality of users is poor, a precoding matrix that matches the wireless channel can be applied to achieve the array gain such that it enhances the quality of the receive signals. One such precoding method is Conjugate Beamforming (CB). For CB precoding, the precoding vector of the kth user is wkCB=ckhkH. When the channel quality is good, the multi-user interference is the major factor that affects the throughput of the system, hence a precoding vector that removes this interference is needed to enhance the system throughput. One such precoding method is Zero-Forcing (ZF). For ZF precoding, the precoding vector of the kth user is wkZFpk(I−{tilde over (H)}kH({tilde over (H)}k{tilde over (H)}kH)−1{tilde over (H)}k)hkH, where {tilde over (H)}k is the multi-user interference channel of the kth user defined as {tilde over (H)}k=[h1T . . . hk−1T hk+1T . . . hKT]T. Moreover, because of system errors, e.g., limited feedback bandwidth or measurement errors, there always exist unavoidable CSI errors. As a result, it is a challenge for the BS to compare these two precoding methods and adaptively employ a preferred precoding method for the UEs.